// 1823 [自实现isOrder/暴力模拟]剔一排序Ⅲ
// http://oj.rnd.huawei.com/problems/1823/details
// 数组已经是有序的，则不做处理，返回数组中最小的元素值。
// 如果数组不是有序的，
// 若删除其中一个元素，使得剩余元素是有序的，返回需要删除的元素值；
// 如果存在多个解，则选择删除元素值最小的。
// 若无解，返回-1
// 输入 2
// 1 2
// 输出 1

#include <algorithm>
#include <iostream>
#include <string>
#include <utility>
#include <vector>
using namespace std;
class Solution {
  enum {
    EQUAL = 0,
    ASCEND,
    DESCEND,
  };

 public:
  void printVect(const vector<int> &Nums) {
    for_each(Nums.begin(), Nums.end(), [](int n) { printf("%d.", n); });
    printf("\n");
  }

  bool isOrder(const vector<int> &Nums) {
    bool ret = false;
    if (Nums.size() <= 1) {
      return true;
    }
    //
    int nOrderFlag = EQUAL;
    size_t i = 0;
    for (i = 0; i < Nums.size(); i++) {
      if (Nums[i] < Nums[i + 1]) {
        nOrderFlag = ASCEND;
        break;
      } else if (Nums[i] > Nums[i + 1]) {
        nOrderFlag = DESCEND;
        break;
      } else {
        nOrderFlag = EQUAL;
      }
    }
    if (nOrderFlag == EQUAL) {
      return true;
    }
    for (i++; i < Nums.size(); i++) {
      if (nOrderFlag == ASCEND && Nums[i - 1] > Nums[i]) {
        return false;
      } else if (nOrderFlag == DESCEND && Nums[i - 1] < Nums[i]) {
        return false;
      }
    }
    return true;
  }
  // 待实现函数，在此函数中填入答题代码;
  int SortByDeleteOne(const vector<int> &Nums) {
    if (Nums.size() == 1) {
      return Nums[0];
    }
    vector<int> vtNew;
    int minVal = 0x7fffffff;
    for (int i = 0; i < Nums.size(); i++) {
      vtNew = Nums;
      vtNew.erase(vtNew.begin() + i);
      if (isOrder(vtNew) && Nums[i] < minVal) {
        minVal = Nums[i];
      }
    }
    return minVal == 0x7fffffff ? -1 : minVal;
  }
};

inline int ReadInt() {
  int number;
  cin >> number;
  return number;
}

template <typename T>
inline vector<T> ReadVector(int size) {
  vector<T> objects(size);
  for (int i = 0; i < size; ++i) {
    cin >> objects[i];
  }
  return objects;
}

int main() {
  int NumsNum = 30;
  NumsNum = ReadInt();
  vector<int> Nums = {1,   1,   2,   3,   18,  23,  28,  32,  4,   37,
                      58,  67,  70,  72,  85,  92,  98,  102, 108, 109,
                      112, 115, 116, 135, 142, 154, 157, 164, 171, 188};
  Nums = ReadVector<int>(NumsNum);

  Solution solu;
  int result = solu.SortByDeleteOne(Nums);
  cout << result << endl;
  return 0;
}
